import { DataTypes, Model, Optional } from 'sequelize';
import sequelize from '../lib/database';

// 定义用户模型的属性
interface UserAttributes {
  id: number;
  username: string;
  password_hash: string;
  email?: string;
  created_at?: Date;
}

// 定义创建用户时可选的属性
interface UserCreationAttributes extends Optional<UserAttributes, 'id' | 'created_at'> {}

// 创建用户模型
class User extends Model<UserAttributes, UserCreationAttributes> {
  // 不需要声明任何属性，Sequelize会自动生成getter和setter
}

// 初始化模型
User.init(
  {
    id: {
      type: DataTypes.BIGINT,
      autoIncrement: true,
      primaryKey: true,
    },
    username: {
      type: DataTypes.STRING(100),
      allowNull: false,
      unique: true,
    },
    password_hash: {
      type: DataTypes.STRING(255),
      allowNull: false,
    },
    email: {
      type: DataTypes.STRING(100),
      allowNull: true,
    },
    created_at: {
      type: DataTypes.DATE,
      allowNull: true,
    },
  },
  {
    sequelize,
    tableName: 'users',
    timestamps: false,
  }
);

export default User;